<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <ul>
        <li>a</li>
        <li>b</li>
        <li>c</li>
        <li>d</li>
    </ul>
    <script>
        // 数组的方法 from() of()
        // from() 将伪数组转换成真正的数组
        function add(){
            // console.log(arguments);
            // es5转换
            let arr = [].slice.call(arguments);
            console.log(arr);

            // es6写法
            let arr2 = Array.from(arguments);
            console.log(arr2);
        }
        add(1,2,3);

        console.log('=============');

        let lis = document.querySelectorAll('li');
        console.log(lis);

        console.log(Array.from(lis));
        // 扩展运算符 将伪数组转换成真正的数组
        console.log([...lis]);

        // from() 还可以接收第二个参数，用来对每个元素进行处理
        let liContents = Array.from(lis, ele => ele.textContent);
        console.log(liContents);

        // 2.of() 将任意的数据类型，转换成数组
        console.log(Array.of(3,11,20,[1,2,3],{id:1}));

        // 3.copyWithin() 用于浅拷贝数组的一部分到同一数组的另一部分，并且返回修改后的数组。它不会改变数组的长度，只是修改现有元素的位置
        console.log([1,2,3,8,9,10].copyWithin(1,3));
        // 表示复制下标为3后面的所有元素替换下标从1开始的位置

        // 4.find() findIndex()
        // find() 找出第一个符合条件的数组成员
        let num = [1,2,-10,-20,9,2].find(n => n < 0);
        console.log(num);
        // findIndex() 找出第一个符合条件的数组成员的索引
        let numIndex = [1,2,-10,-20,9,2].findIndex(n => n < 0);
        console.log(numIndex);
    </script>
</body>
</html>